package com.teaching.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.SessionAttributes;

import com.teaching.dao.UserDAO;
import com.teaching.entity.User;

@Controller
// @RequestMapping("user")
@SessionAttributes(value= {"userID", "userType"})
public class UserController {
	UserDAO userDAO=new UserDAO();
	
	// 登录账户，直接接受一个用户类作为输入
	// 先查数据库，如果有的话，就返回主页，否则返回登录页面
	@RequestMapping("login")
	public String login(User user){
		System.out.println("User Controller: login");
		if (userDAO.Have(user)) {
			return "homePage";
		}
		else {
			return "loginPage";
		}
	}
	
	@RequestMapping("changePassword")
	public String changePassword(User user, String newPassword,String rePassword) {
		
		System.out.println("User controller:changePassword:");
		System.out.println(user.toString() + rePassword);
		if(newPassword.equals(rePassword)) {
		    if (userDAO.Have(user)){
		    	user.setPassword(newPassword);
			    userDAO.changePassword(user);
			    return "loginPage";
			    }
		    else {
			// 现在虽然输入密码出错了，但是我们没有提示信息
			// 这个可以用前端解决，也可以在后端处理，就是不进行注册，重新返回页面，
			// 是的，前端处理比较方便，但是我不会
			    System.out.println("Passwords don't match!");
			    return "passwordPage";
		    } 
		}
		else {
			System.out.println("rePasswords don't match!");
			return "passwordPage";
		}
		
		
	}
	
	
	@RequestMapping("register")
	public String register(User user, String rePassword, ModelMap model) {
		// 显示一下输入的信息
		// 刚才由于这个名字不一致，rePassword写成了repassword，系统没有自动匹配上
		// 现在应该可以直接看到确认密码了
		System.out.println("User controller: register:");
		System.out.println(user.toString() + rePassword);
		if (user.getPassword().equals(rePassword)){
			userDAO.addUser(user);
			model.addAttribute("userID", user.getUserID());
			model.addAttribute("userType", user.getUserType());
			// 如果是老师，直接给用户信息修改页面。
			if (user.getUserType()==1) {
				return "teacherModifyPage";
			}
			else {
				return "homePage";
			}
		}
		else {
			// 现在虽然输入密码出错了，但是我们没有提示信息
			// 这个可以用前端解决，也可以在后端处理，就是不进行注册，重新返回页面，
			// 是的，前端处理比较方便，但是我不会
			System.out.println("Passwords don't match!");
			return "registerPage";
		}
	}

	
	
}
